#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <math.h>
#include <stddef.h>

//struct S
//{
//	double c1;
//	int a;
//	char c2;
//};
//
//#define OFFSETOF(type,mem)  (size_t)&(((type*)0)->mem)
//
//int main()
//{
//	struct S s;
//	printf("%zd\n", OFFSETOF(struct S, c1));
//	printf("%zd\n", OFFSETOF(struct S, a));
//	printf("%zd\n", OFFSETOF(struct S, c2));
//
//	return 0;
//}


#define SWAP_BIT(n)  (n= ((n&0x55555555)<<1) + ((n&0xaaaaaaaa)>>1))

int main()
{
	int a = 11;
	SWAP_BIT(a);
	printf("%d\n", a);
	SWAP_BIT(a);
	printf("%d\n", a);
	return 0;
}